Text or code editors are software programs specifically designed to facilitate source code specification and editing by programmers. Code editors (e.g., vi, emacs, notepad . . . ) provide functionality similar to word processors for receiving, modifying, and manipulating source code. Some code editors are very simplistic and text based while others can be quite complex and employ graphical user interface (GUI) technologies. In addition to code specification and editing, code editors can facilitate building and compiling programs. Although, text editors can be stand-alone programs, they are often incorporated into integrated development environments.
Integrated development environments (IDEs) (also referred to as integrated design environments, interactive development environments, and various combinations thereof) are conglomerates of programs that aid software development. Not only do IDEs include code editors, but they also typically include a compiler and/or interpreter as well as other tools like debuggers. This allows IDEs to be a complete software development and testing kit. These environments typically also employ visual programming techniques. Visual programming pertains to programming in part by using graphical interfaces and cutting, pasting, and/or modifying programmatic blocks to build programs. IDEs can also provide real-time programmatic assistance for particular programming languages to further aid program development. For example, suggestions can be made based on current programmatic entries, statements can be automatically completed, and the like.
However, there are several problems with conventional IDEs. In particular, most IDEs are limited to a single programming language per project. This forces programmers to utilize one language for all project tasks, rather than employing the best language for each respective task, for example, utilizing C# for an entire project or application. Furthermore, conventionally projects are typically compiled into only a signal unit. Thus, conventional technologies generally employ only a single language and compilation unit. In addition to the limitations on project development, intelligent assistance (e.g., programmatic suggestions, automatic statement completion . . . ) is limited to a single language project. Thus, even IDEs that support multiple languages force programmers to choose from utilizing a single programming language and compilation unit or alternatively experiencing limited or no intelligent assistance.
Accordingly, there is a need in the art for systems and methods to provide intelligent code assistance across multiple languages and compilation units in a project.